/**
 * 用户认证相关API调用模块
 */

// 确保window.api.auth对象存在
window.api = window.api || {};
window.api.auth = window.api.auth || {};

/**
 * 用户登录函数
 * @param {Object} loginInfo - 登录信息
 * @param {string} loginInfo.phone - 手机号
 * @param {string} loginInfo.password - 密码
 * @returns {Promise} - 返回Promise对象
 */
window.api.auth.login = async function(loginInfo) {
    try {
        // 调用后端登录API
        const response = await window.utils.api.post('/api/auth/login', loginInfo);
        
        // 检查响应状态
        if (response && response.status === 'success' && response.code === 2000) {
            // 保存令牌到cookie
            if (response.token) {
                if (window.utils && window.utils.cookie && window.utils.cookie.saveAuthToken) {
                    window.utils.cookie.saveAuthToken(response.token);
                    console.log('登录成功，令牌已保存到cookie');
                }
            }
            
            return {
                success: true,
                token: response.token,
                userId: response.userId,
                username: response.username,
                message: response.message
            };
        } else {
            throw new Error(response.message || '登录失败');
        }
    } catch (error) {
        console.error('登录请求失败:', error);
        throw error;
    }
};

/**
 * 验证令牌函数
 * @param {string} token - 认证令牌
 * @returns {Promise} - 返回Promise对象
 */
window.api.auth.validateToken = async function(token) {
    try {
        // 调用后端令牌验证API
        const response = await window.utils.api.post('/api/auth/token/validate', { token });
        
        // 检查响应状态码
        if (response && response.code === 3000) {
            console.log('用户认证成功');
            return {
                success: true,
                code: response.code,
                username: response.username,
                message: response.message
            };
        } else if (response && response.code === 3001) {
            throw new Error(response.message || '令牌验证失败');
        } else {
            throw new Error('令牌验证请求失败');
        }
    } catch (error) {
        console.error('令牌验证失败:', error);
        throw error;
    }
};

/**
 * 获取用户信息函数
 * @param {string} token - 认证令牌
 * @returns {Promise} - 返回Promise对象
 */
window.api.auth.getUserInfo = async function(token) {
    try {
        // 构建请求头
        const headers = {
            'Authorization': `Bearer ${token}`
        };
        
        // 调用后端获取用户信息API
        const response = await window.utils.api.get('/api/auth/user/info', {}, { headers });
        
        if (response && response.status === 'success') {
            return {
                success: true,
                userInfo: response.data,
                message: response.message
            };
        } else {
            throw new Error(response.message || '获取用户信息失败');
        }
    } catch (error) {
        console.error('获取用户信息请求失败:', error);
        throw error;
    }
};

/**
 * 退出登录函数
 * @returns {Promise} - 返回Promise对象
 */
window.api.auth.logout = async function() {
    try {
        // 清除令牌
        if (window.utils && window.utils.cookie && window.utils.cookie.removeAuthToken) {
            window.utils.cookie.removeAuthToken();
            console.log('退出登录成功，令牌已清除');
        }
        
        return {
            success: true,
            message: '退出登录成功'
        };
    } catch (error) {
        console.error('退出登录失败:', error);
        throw error;
    }
};